#!/usr/bin/env node

/**
 * 测试图标设置功能
 */

const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');

console.log('🔧 测试图标设置功能\n');

// 检查图标文件
const iconPath = path.join(__dirname, 'redcat.ico');
if (!fs.existsSync(iconPath)) {
    console.log('❌ 找不到 redcat.ico 文件');
    process.exit(1);
}

console.log(`✅ 找到图标文件: ${iconPath}`);

// 检查 dist 目录
const distDir = path.join(__dirname, 'dist');
if (!fs.existsSync(distDir)) {
    console.log('❌ 找不到 dist 目录，请先运行构建脚本');
    process.exit(1);
}

// 查找 exe 文件
const files = fs.readdirSync(distDir);
const exeFiles = files.filter(file => file.toLowerCase().endsWith('.exe'));

if (exeFiles.length === 0) {
    console.log('❌ 在 dist 目录中找不到 exe 文件');
    process.exit(1);
}

console.log(`✅ 找到 ${exeFiles.length} 个 exe 文件:`);
exeFiles.forEach(file => console.log(`  - ${file}`));

// 测试图标设置
const testExe = exeFiles[0];
const exePath = path.join(distDir, testExe);

console.log(`\n正在测试图标设置: ${testExe}`);

// 测试方法1: 本地 rcedit
try {
    const localRcedit = path.join(__dirname, 'node_modules', '.bin', 'rcedit.exe');
    if (fs.existsSync(localRcedit)) {
        console.log('尝试使用本地 rcedit...');
        execSync(`"${localRcedit}" "${exePath}" --set-icon "${iconPath}"`, { 
            stdio: 'inherit',
            timeout: 30000
        });
        console.log('✅ 本地 rcedit 测试成功');
    } else {
        console.log('⚠️ 本地 rcedit.exe 不存在');
    }
} catch (err) {
    console.log(`❌ 本地 rcedit 测试失败: ${err.message}`);
}

// 测试方法2: npx rcedit
try {
    console.log('\n尝试使用 npx rcedit...');
    execSync(`npx rcedit "${exePath}" --set-icon "${iconPath}"`, { 
        stdio: 'inherit',
        timeout: 30000
    });
    console.log('✅ npx rcedit 测试成功');
} catch (err) {
    console.log(`❌ npx rcedit 测试失败: ${err.message}`);
}

console.log('\n🎯 图标设置测试完成！');
console.log('如果测试成功，exe文件应该已经设置了正确的图标');
console.log('如果测试失败，请检查错误信息并尝试手动设置');
